package com.myapp.struts.action;

import com.myapp.hibernate.model.Boxeador;
import com.myapp.hibernate.model.Combate;
import com.myapp.hibernate.model.Entrada;
import com.myapp.hibernate.model.MuestraCombate;
import com.myapp.hibernate.model.Usuario;
import com.myapp.hibernate.util.BoxeadorUtil;
import com.myapp.hibernate.util.CombateUtil;
import com.myapp.hibernate.util.EntradaUtil;
import com.myapp.hibernate.util.EstadioUtil;
import com.myapp.struts.form.EntradasForm;
import com.myapp.util.Fecha;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class SeccionEntradasAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        EntradasForm formulario = (EntradasForm) form;
        CombateUtil combateUtil = new CombateUtil();
        BoxeadorUtil boxeadorUtil = new BoxeadorUtil();
        EstadioUtil estadioUtil = new EstadioUtil();
        EntradaUtil entradaUtil = new EntradaUtil();
        
        Usuario usuarioActivo = (Usuario) request.getSession().getAttribute("UsuarioLogado");
        
        Calendar hoy = new GregorianCalendar();
        String cadenaHoy = "";
        cadenaHoy += hoy.get(Calendar.YEAR) + "-" + Fecha.obtenerMesReal(hoy.get(Calendar.MONTH)) + "-" + hoy.get(Calendar.DAY_OF_MONTH);

        ArrayList<Combate> combates = combateUtil.obtenerListaCombatesPosteriores(cadenaHoy);

        Boxeador boxeadorAuxiliar;
        ArrayList<MuestraCombate> tablaCombates = new ArrayList<MuestraCombate>();
        //falta que muestre solo los de fechas posteriores a hoy
        for (Combate c : combates) {
            MuestraCombate mc = new MuestraCombate();
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(c.getIdBoxeador1());
            mc.setNombreBoxeador1(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(c.getIdBoxeador2());
            mc.setNombreBoxeador2(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            mc.setEstadio(estadioUtil.obtenerEstadio(c.getIdEstadio()).getNombre());
            mc.setFecha(c.getFecha());
            mc.setIdCombate(c.getIdCombate());
            tablaCombates.add(mc);
        }
        formulario.setListadoCombates(tablaCombates);
        
        
        ArrayList<Entrada> entradas = entradaUtil.obtenerListaEntradasPorUsuario(usuarioActivo.getIdUsuario());
        ArrayList<MuestraCombate> tablaEntradas = new ArrayList<MuestraCombate>();
        for(Entrada e : entradas){
            Combate combateComprado = combateUtil.obtenerCombate(e.getIdCombate());
            
            MuestraCombate mc = new MuestraCombate();
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(combateComprado.getIdBoxeador1());
            mc.setNombreBoxeador1(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(combateComprado.getIdBoxeador2());
            mc.setNombreBoxeador2(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            mc.setEstadio(estadioUtil.obtenerEstadio(combateComprado.getIdEstadio()).getNombre());
            mc.setFecha(combateComprado.getFecha());
            tablaEntradas.add(mc);
        }
        formulario.setListadoEntradas(tablaEntradas);

        return mapping.findForward(SUCCESS);
    }
}
